package com.candy.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;

/**
 * 使用@Configuration 表明这是一个配置文件，等价于加载了一个xml的配置文件
 * 一般使用spring的依赖注入，向spring容器注入一个配置实体类bean对象
 *  另外，可以使用@value 给配置类的一些属性两遍注入初始化值
 *  注入的值直接使用类似于${属性名}的方法加载配置文件的指定输姓名的属性值
 */
@Configuration
public class DruidDataSourceConfiguration {
    /*
     * 方法描述
     * @Bean 的注解如果使用在方法上，则表示把方法的返回值对象作为一个spring容器的一个bean对象进行管理
     * @Primary注解表示如果spring容器中有多个相同的bean对象是，优先使用@Primary注解标注的对象
    */
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druid(){
        return new DruidDataSource();
    }

}
